package com.atguigu.common.constant;

import org.springframework.stereotype.Component;

/**
 * ClassName: LoginUserContext
 * Package: com.atguigu.common.constant
 * Description: 登录用户全局上下文类对象
 *
 * @Author 梅超凡
 * @Create 2024/11/15 21:43
 * @Version 1.0
 */
@Component
public class  LoginUserContext {
    /**
     * 定义了一个名为 userThreadLocal 的 ThreadLocal 变量，
     * 用于在当前线程中存储和获取 LoginUser 对象。
     * 每个线程都有自己独立的 LoginUser 实例，不会互相干扰。用于保存当前登录用户的会话信息
     */
    private static final ThreadLocal<LoginUser> userThreadLocal = new ThreadLocal<>();

    /**
     * 设置当前线程的 LoginUser 对象
     */
    public static void setLoginUser(LoginUser loginUser) {
        userThreadLocal.set(loginUser);
    }

    /**
     * 获取当前线程的 LoginUser 对象
     */
    public static LoginUser getLoginUser() {
        return userThreadLocal.get();
    }

    /**
     * 清除当前线程的 LoginUser 对象
     */
    public static void clear() {
        userThreadLocal.remove();
    }
}
